package br.com.geropder.aspectos.model;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToOne;
import javax.persistence.Table;

@Entity
@Table(name = "ITEM")
public class Item implements Serializable {
	private static final long serialVersionUID = 7451293753131862217L;

	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	@Column(name = "item_id")
	private long id;

	@OneToOne
	@JoinColumn(name = "sp_id")
	private SP sp;

	@ManyToOne
	@JoinColumn(name = "vistoria_id")
	private Vistoria vistoria;

	@OneToOne
	@JoinColumn(name = "grupo_id")
	private Grupo grupo;

	@OneToOne
	@JoinColumn(name = "problema_id")
	private Problema problema;

	@OneToOne
	@JoinColumn(name = "ocorrencia_id")
	private Ocorrencia ocorrencia;

	@OneToOne
	@JoinColumn(name = "uba_id")
	private UBA uba;

	@OneToOne
	@JoinColumn(name = "empresa_id")
	private Empresa empresa;

	@OneToOne
	@JoinColumn(name = "regional_id")
	private Regional regional;

	@Column(name = "item_km")
	private String km;

	@Column(name = "item_metros")
	private String metros;

	@Column(name = "item_sentido")
	private String sentido;

	@Column(name = "item_municipio")
	private String municipio;

	@Column(name = "item_hora")
	private String hora;

	@Column(name = "item_observacao")
	private String observacao;

	@Column(name = "item_sugestao")
	private String sugestao;

	public long getId() {
		return id;
	}

	public void setId(long id) {
		this.id = id;
	}

	public SP getSp() {
		return sp;
	}

	public void setSp(SP sp) {
		this.sp = sp;
	}

	public Vistoria getVistoria() {
		return vistoria;
	}

	public void setVistoria(Vistoria vistoria) {
		this.vistoria = vistoria;
	}

	public Grupo getGrupo() {
		return grupo;
	}

	public void setGrupo(Grupo grupo) {
		this.grupo = grupo;
	}

	public Problema getProblema() {
		return problema;
	}

	public void setProblema(Problema problema) {
		this.problema = problema;
	}

	public Ocorrencia getOcorrencia() {
		return ocorrencia;
	}

	public void setOcorrencia(Ocorrencia ocorrencia) {
		this.ocorrencia = ocorrencia;
	}

	public UBA getUba() {
		return uba;
	}

	public void setUba(UBA uba) {
		this.uba = uba;
	}

	public Empresa getEmpresa() {
		return empresa;
	}

	public void setEmpresa(Empresa empresa) {
		this.empresa = empresa;
	}

	public Regional getRegional() {
		return regional;
	}

	public void setRegional(Regional regional) {
		this.regional = regional;
	}

	public String getKm() {
		return km;
	}

	public void setKm(String km) {
		this.km = km;
	}

	public String getMetros() {
		return metros;
	}

	public void setMetros(String metros) {
		this.metros = metros;
	}

	public String getSentido() {
		return sentido;
	}

	public void setSentido(String sentido) {
		this.sentido = sentido;
	}

	public String getMunicipio() {
		return municipio;
	}

	public void setMunicipio(String municipio) {
		this.municipio = municipio;
	}

	public String getHora() {
		return hora;
	}

	public void setHora(String hora) {
		this.hora = hora;
	}

	public String getObservacao() {
		return observacao;
	}

	public void setObservacao(String observacao) {
		this.observacao = observacao;
	}

	public String getSugestao() {
		return sugestao;
	}

	public void setSugestao(String sugestao) {
		this.sugestao = sugestao;
	}

	@Override
	public String toString() {
		return "Item [id=" + id + ", sp=" + sp + ", vistoria=" + vistoria
				+ ", grupo=" + grupo + ", problema=" + problema
				+ ", ocorrencia=" + ocorrencia + ", uba=" + uba + ", empresa="
				+ empresa + ", regional=" + regional + ", km=" + km
				+ ", metros=" + metros + ", sentido=" + sentido
				+ ", municipio=" + municipio + ", hora=" + hora
				+ ", observacao=" + observacao + ", sugestao=" + sugestao + "]";
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((empresa == null) ? 0 : empresa.hashCode());
		result = prime * result + ((grupo == null) ? 0 : grupo.hashCode());
		result = prime * result + ((hora == null) ? 0 : hora.hashCode());
		result = prime * result + (int) (id ^ (id >>> 32));
		result = prime * result + ((km == null) ? 0 : km.hashCode());
		result = prime * result + ((metros == null) ? 0 : metros.hashCode());
		result = prime * result
				+ ((municipio == null) ? 0 : municipio.hashCode());
		result = prime * result
				+ ((observacao == null) ? 0 : observacao.hashCode());
		result = prime * result
				+ ((ocorrencia == null) ? 0 : ocorrencia.hashCode());
		result = prime * result
				+ ((problema == null) ? 0 : problema.hashCode());
		result = prime * result
				+ ((regional == null) ? 0 : regional.hashCode());
		result = prime * result + ((sentido == null) ? 0 : sentido.hashCode());
		result = prime * result + ((sp == null) ? 0 : sp.hashCode());
		result = prime * result
				+ ((sugestao == null) ? 0 : sugestao.hashCode());
		result = prime * result + ((uba == null) ? 0 : uba.hashCode());
		result = prime * result
				+ ((vistoria == null) ? 0 : vistoria.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Item other = (Item) obj;
		if (empresa == null) {
			if (other.empresa != null)
				return false;
		} else if (!empresa.equals(other.empresa))
			return false;
		if (grupo == null) {
			if (other.grupo != null)
				return false;
		} else if (!grupo.equals(other.grupo))
			return false;
		if (hora == null) {
			if (other.hora != null)
				return false;
		} else if (!hora.equals(other.hora))
			return false;
		if (id != other.id)
			return false;
		if (km == null) {
			if (other.km != null)
				return false;
		} else if (!km.equals(other.km))
			return false;
		if (metros == null) {
			if (other.metros != null)
				return false;
		} else if (!metros.equals(other.metros))
			return false;
		if (municipio == null) {
			if (other.municipio != null)
				return false;
		} else if (!municipio.equals(other.municipio))
			return false;
		if (observacao == null) {
			if (other.observacao != null)
				return false;
		} else if (!observacao.equals(other.observacao))
			return false;
		if (ocorrencia == null) {
			if (other.ocorrencia != null)
				return false;
		} else if (!ocorrencia.equals(other.ocorrencia))
			return false;
		if (problema == null) {
			if (other.problema != null)
				return false;
		} else if (!problema.equals(other.problema))
			return false;
		if (regional == null) {
			if (other.regional != null)
				return false;
		} else if (!regional.equals(other.regional))
			return false;
		if (sentido == null) {
			if (other.sentido != null)
				return false;
		} else if (!sentido.equals(other.sentido))
			return false;
		if (sp == null) {
			if (other.sp != null)
				return false;
		} else if (!sp.equals(other.sp))
			return false;
		if (sugestao == null) {
			if (other.sugestao != null)
				return false;
		} else if (!sugestao.equals(other.sugestao))
			return false;
		if (uba == null) {
			if (other.uba != null)
				return false;
		} else if (!uba.equals(other.uba))
			return false;
		if (vistoria == null) {
			if (other.vistoria != null)
				return false;
		} else if (!vistoria.equals(other.vistoria))
			return false;
		return true;
	}
}